cloudformation으로 lambda 함수 생성해보기
안녕하세요, 임채정입니다.
이번 블로그에서는 S3에 있는 함수 .zip 파일을 Cfn을 통해 람다 함수로 생성하는 방법에 대해 정리했습니다.
S3 버킷 작성
람다 함수 .zip 파일 압축
람다 함수는 테스트를 위해 간단하게 작성했습니다.
파일이름: lambda_function.py
import json def lambda_handler(event, context): return "Lambda-cfn"
그 후 파일을 .zip 파일의 형태로 압축합니다.
압축 파일 이름: lambda_function.zip
S3 버킷 생성 및 파일 업로드
그 다음으로 .zip 파일을 넣어둘 버킷을 생성하겠습니다.
스택 생성 시 파일의 버전 정보를 입력해야 되기 때문에 버전 관리을 활성화 해줍니다.
버킷이 생성이 잘 되면 위에서 만들어둔 압축된 파일을 업로드하고 아래의 사진에 표시해둔 정보를 따로 정리해둡니다.
버킷이름 : lambda-cfn-20220106
파일 이름 : lambda_function.zip
파일 버전 : w4APSBR9u9SIuELyZX_5jYNanubulNt1
Cfn 스택 작성
Cfn 템플릿
템플릿은 두 개의 리소스를 생성합니다.
1. IAM Role
2. Lambda 함수
또한 파라미터에 S3의 정보를 입력합니다.
Default
로 위에서 생성한 S3 정보를 입력해뒀습니다.
AWSTemplateFormatVersion: 2010-09-09 Description: Lambda creation # ------------ # Parameters # ------------ Parameters: S3Bucket: Default: "lambda-cfn-20220106" Type: String S3Key: Default: "lambda_funcion.zip" Type: String S3ObjectVersion: Default: "w4APSBR9u9SIuELyZX_5jYNanubulNt1" Type: String # ------------ # Resources # ------------ Resources: LambdaExecutionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - sts:AssumeRole Path: "/" Policies: - PolicyName: root PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - logs:* Resource: arn:aws:logs:*:*:* - Effect: Allow Action: - xray:PutTraceSegment - xray:PutTelemetryRecords - xray:GetSamplingRules - xray:GetSamplingTargets - xray:GetSamplingStatisticSummaries Resource: "*" - Effect: Allow Action: - s3:Get* - s3:List* Resource: "*" LambdaFunction: Type: "AWS::Lambda::Function" Properties: Handler: "lambda_function.lambda_handler" Role: !GetAtt LambdaExecutionRole.Arn Code: S3Bucket: !Ref S3Bucket S3Key: !Ref S3Key S3ObjectVersion: !Ref S3ObjectVersion Runtime: "python3.9" Timeout: 10 TracingConfig: Mode: "Active"
스택 생성
그럼 스택을 생성해보겠습니다.
위에서 준비해준 템플릿을 업로드 해줍니다.
스택이름을 입력하고, 입력되어진 파라미터 정보가 다르지 않은지 확인합니다.
IAM Role을 생성하기 때문에 스택 생성 전에 나오는 안내문에 체크를 해줍니다.
스택을 생성하고 기다리면 템플릿에 작성한 것과 같이 두 개의 리소스가 생성되었습니다.
리소스 확인
이번에는 생성된 리소스가 템플릿에 적힌 그대로 생성이 잘 되었는지 확인해보겠습니다.
IAM Role 를 확인해보면 작성한 권한이 잘 들어간채로 잘 생성이 되었습니다.
람다 함수도 실행도 잘 되는 상태로 잘 생성이 되었습니다.